﻿<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Importacion.aspx.cs" MasterPageFile="MasterPage.Master" Inherits="Web.Importacion" %>

<%@ Import Namespace="Import.Exceptions" %>
<%@ Import Namespace="Web.Handlers.Data" %>
<%@ Register Src="~/CustomControls/UserGrid.ascx" TagPrefix="uc1" TagName="UserGrid" %>

<asp:Content ID="mainContent" ContentPlaceHolderID="MainContent" runat="Server" >

    <!-- Estilos -->
    <style type="text/css" >
        #fileScript { width:0; height:0; } 
        #btnSeleccionarArchivo, #btnGenerarGuion { width: 120px; }

        fieldset {
            padding: 10px 20px 10px 20px;
        }
        .settingsContainer {
            float: left;
            margin: 0px 10px 0px 10px;
        }
        #pnlOpcionesAvanzadas_Configuracion {
            width: 400px;
        }
    </style>
    <!-- Fin de [Estilos] -->

    <!--$(document).ready-->  
    <script type="text/javascript" >

        var _params = null;

        var ImportExceptions =
        {
            HeaderDataExceptions:
            {
                MissingHeaderData: "<%= typeof(MissingHeaderDataException).Name %>"
            },
            TimeCodeExceptions :
            {
                MissingTimeCode: "<%= typeof(MissingTimeCodeException).Name %>",
                InvalidFormatTimeCode: "<%= typeof(InvalidFormatTimeCodeException).Name %>",
                UnexpectedTimeCode: "<%= typeof(UnexpectedTimeCodeException).Name %>"
            },
            DialogueExceptions:
            {
                EmtpyDialogue: "<%= typeof(EmtpyRowException).Name %>"    
            }
        };

        var userGridId = "<%= UserGrid.ClientID %>";

        //var HeaderDataExceptions = getObjectKeys(ImportExceptions.HeaderDataExceptions);
        //var TimeCodeExceptions   = getObjectKeys(ImportExceptions.TimeCodeExceptions);
        //var DialogueExceptions   = getObjectKeys(ImportExceptions.DialogueExceptions);
        var HeaderDataExceptions = getObjectPropertiesAsArray(ImportExceptions.HeaderDataExceptions);
        var TimeCodeExceptions = getObjectPropertiesAsArray(ImportExceptions.TimeCodeExceptions);
        var DialogueExceptions = getObjectPropertiesAsArray(ImportExceptions.DialogueExceptions);

        var controles = { General: {}, Tablas: { GuionesImportados: {} }, Importacion: { ErrorTables: {} }, Dialogos: { Traductor: {} } };

        /* General */
        controles.General.Proyecto          = "<%= selProyecto.ClientID %>",
        controles.General.FileSelector      = "fileScript";
        controles.General.btnSeleccionar    = "btnSeleccionarArchivo";
        controles.General.txtSeleccion      = "txtSeleccion";
        controles.General.btnGenerarGuion   = "btnGenerarGuion";

        /* Importación */
        controles.Importacion =
        {
            Results :
            {
                Id: "pnlImportResult",
                Message : "pnlImportMessage",
                ErrorPanel :
                {
                    Id : "pnlImportError",
                    Header:
                    {
                        Id : "pnlImportErrorHeaderDataInfo",
                        Table:
                        {
                            Id : "tblImportErrorHeaderDataInfo",
                            Row : "rowImportErrorHeaderDataInfo{0}"
                        }
                    },
                    Dialogue:
                    {
                        Id: "pnlImportErrorDialogueInfo",
                        Table:
                        {
                            Id: "tblImportErrorDialogueInfo",
                            Row: "rowImportErrorDialogueInfo{0}",
                            ColTimeCode: "colImportErrorDialogueInfoTimeCode{0}",
                            ColCharacter: "colImportErrorDialogueInfoCharacter{0}",
                            ColDialogue: "colImportErrorDialogueInfoDialogue{0}"
                        }
                    }
                }
            }
        };

        /* Tablas */
        controles.Tablas.GuionesImportados.Id   = "tblGuionesImportados";

        /* Diálogos */
        controles.Dialogos.Traductor = { Id: "dialogSeleccionTraductor", Title: "Selección de Traductor", Mensaje: "lblMensajeSeleccionTraductor", btnConfirmar: "btnConfirmarTraductor", Width: 800, Height: 525 }

        $(document).ready(function() {
            procesarParametros();
            cargarPagina_Importacion();
        });
        function getObjectPropertiesAsArray(object)
        {
            var arr = new Array();
            var keys = getObjectKeys(object);
            for (var i=0; i < keys.length; i++)
            {
                arr.push(object[keys[i]]);
            }
            return arr;
        }
        function procesarParametros()
        {
            Framework.Page.Parameters.parseQueryString();
        }
        function cargarPagina_Importacion()
        {
            Site.Messages.showLoadingMessage();

            Site.Page.setTitle("Importación de Guiones");

            configurarPagina();

            Site.Messages.hideLoadingMessage();
        }
        function configurarPagina()
        {
            createAccordion("pnlOpcionesAvanzadas");

            initializeFileUploader(controles.General.FileSelector, "dragAndDropFileScripts", Site.Messages.showLoadingMessage, Site.Messages.hideLoadingMessage);

            Helpers.MultiSelectHelper.configure("#" + controles.General.Proyecto, false, false, { "width": "100%" } );
            addPlaceHolder(controles.General.txtSeleccion, "<< SELECCIONAR ARCHIVO >>");

            $("#" + controles.General.btnSeleccionar).click
            (
                function(e)
                {
                    e.preventDefault();
                    var fileSelector = $("#" + controles.General.FileSelector);
                    fileSelector.removeAttr("disabled");
                    fileSelector.click();
                    fileSelector.attr("disabled", "disabled");
                }
            );
            $("#" + controles.General.btnGenerarGuion).click(function() { generarImportacion(controles.General.FileSelector, Site.Messages.showLoadingMessage, Site.Messages.hideLoadingMessage); });

            inicializarGrillaGuionesImportados();

            inicializarDialogoSeleccionTraductor();
        }
        function initializeFileUploader(idFileSelector, idDragAndDropZone, showLoadingFn, hideLoadingFn)
        {
            $('#' + idFileSelector).change(function()
            {
                clearImportResults();
                var txtSeleccion = $("#" + controles.General.txtSeleccion);
                var archivoSeleccionado = "";
                var files = getFileSelectorFiles(idFileSelector);
                if (files != null && files.length > 0)
                    archivoSeleccionado = files[0].name;
                txtSeleccion.val(archivoSeleccionado);
            });

            //$('#' + idDragAndDropZone)[0].ondrop = function (e)
            //{
            //    e.preventDefault();
            //    uploadFiles(_ScriptFileHandler, e.dataTransfer.files, showLoadingFn, hideLoadingFn );
            //};
        }
        function getFileSelectorFiles(id) {
            var files = null;
            var selector = document.getElementById(id);
            if (selector != null)
                files = selector.files;
            return files;
        }
        function generarImportacion(idFileSelector, showLoadingFn, hideLoadingFn)
        {
            var importData = crearDatosImportacion();

            var errores = validarDatosImportacion(importData);
            if (errores.length == 0)
            {
                uploadFiles(_ScriptFileHandler, importData, showLoadingFn, hideLoadingFn);
                clearSelection($("#" + idFileSelector).id);
            }
            else
            {
                var mensajeValidacion = "<ul>";
                for (var i = 0; i < errores.length; i++) {
                    mensajeValidacion += "<li>" + errores[i].message + "</li>";
                }
                mensajeValidacion += "</ul>";
                showImportResults(false, mensajeValidacion);
            }
        }
        function crearDatosImportacion() 
        {
            var importData =
            {
                Archivos: getFileSelectorFiles(controles.General.FileSelector),
                IdProyecto: Helpers.MultiSelectHelper.getFirstSelectedValue(controles.General.Proyecto),
                OmitirPrimerFila: $("#chkOmitFirstRow").is(':checked'),
                IdGuion: Helpers.jqGridHelper.getSelectedRowIds("{0}_Grid".format(controles.Tablas.GuionesImportados.Id), true)
            };
            return importData;
        }
        function validarDatosImportacion(importData)
        {
            var errores = [];
            
            if (importData.IdProyecto == Constants.Entities.DefaultId)
                registrarError($("#" + controles.General.Proyecto).next(), errores, "Debe seleccionar el <b>Proyecto</b> al cual el Guión será asociado.");

            if (importData.Archivos == null || importData.Archivos.length == 0)
                registrarError($("#" + controles.General.txtSeleccion), errores, "Debe seleccionar el <b>Documento</b> a importar.");

            //if ( errores.length > 0 )
            //    return false;
            //else
            //    return true;

            return errores;
        }
        function clearSelection(idFileSelector)
        {
            var fileSelector = $("#" + idFileSelector);
            fileSelector.replaceWith( fileSelector.val("").clone(true) );
            $("#" + controles.General.txtSeleccion).text("");
        }
        function uploadFiles(url, importData, showLoadingFn, hideLoadingFn)
        {
            //var contentType = file.type;
            //this.files[0]
            var formData = new FormData();

            $.each(importData.Archivos, function(key, value)
            {
                formData.append(key, value);
            });

            //var importSettings =
            //{
            //    UserId : _CurrentUser.Id,
            //    TablesInfo:
            //    {
            //        Header:
            //        {
            //            Index: 1,
            //            Translator: { RowIndex: 1, ColIndex: 2 },
            //            //Keyword: { RowIndex: 2, ColIndex: 2 },
            //            Project: { RowIndex: 2, ColIndex: 2 },
            //            Episode: { RowIndex: 3, ColIndex: 2 },
            //            OriginalTitle: { RowIndex: 4, ColIndex: 2 },
            //            TranslatedTitle: { RowIndex: 5, ColIndex: 2 },
            //            RunningTime: { RowIndex: 6, ColIndex: 2 }
            //        },
            //        Content:
            //        {
            //            Index: 2,
            //            OmitFirstRow : omitFirstRow,
            //            TimeCode: { RowIndex: 0, ColIndex: 1 },
            //            Character: { RowIndex: 0, ColIndex: 2 },
            //            Dialogue: { RowIndex: 0, ColIndex: 3 }
            //        }
            //    }
            //};

            formData.append("IdProject", importData.IdProyecto );

            //formData.append("file", $("#file")[0].files[0]);
            formData.append("OmitFirstRow", importData.OmitirPrimerFila);

            if ( importData.IdGuion.length > 0 )
                formData.append("IdScript", importData.IdGuion[0] );

            // formData.append("UserId", _CurrentUser.Id);
            //formData.append("ImportSettings", JSON.stringify(importSettings));

            $.ajax
            ({
                url: url,
                type: 'POST',
                data: formData,
                //datatype: "json",
                //crossDomain: true,
                processData: false, //Because jQuery will convert the files arrays into strings and the server can't pick it up.
                contentType: false, //Set this to false because jQuery defaults to application/x-www-form-urlencoded and doesn't send the files. Also setting it to multipart/form-data doesn't seem to work either.
                beforeSend: function (xhr, settings)
                {
                    //xhr.setRequestHeader("Content-type", contentType);
                    if ( showLoadingFn != null )
                        showLoadingFn.call(this);

                    clearImportResults();
                },
                xhrFields:
                {
                    // add listener to XMLHTTPRequest object directly for progress (jquery doesn't have this yet)
                    onprogress: function (progress) 
                    {
                        //// calculate upload progress
                        //var percentage = Math.floor((progress.total / progress.totalSize) * 100);
                        //// log upload progress to console
                        //if (percentage === 100)
                        //{
                        //}
                    }
                },
                complete: function(response)
                {
                    if ( hideLoadingFn != null )
                        hideLoadingFn.call(this);
                },
                success: function (response)
                {
                    //if ( hideLoadingFn != null )
                    //    hideLoadingFn.call(this);
                    var respuestaInfo = jQuery.parseJSON(response);
                    showImportResults(respuestaInfo.Resultado, respuestaInfo.Mensaje, respuestaInfo.Valor);
                },
                error: function(jqXHR, textStatus, errorThrown)
                {
                    if ( hideLoadingFn != null )
                        hideLoadingFn.call(this);

                    if ( handleError != null )
                        handleError(jqXHR, textStatus, errorThrown); //function defined in MasterPage
                }
            });
        }
        function clearImportResults()
        {
            // Message
            $("#" + controles.Importacion.Results.Message).removeClass(_notifications.success).removeClass(_notifications.error).hide();

            // Error Panel
            var errorPanel = controles.Importacion.Results.ErrorPanel;
            $("#" + errorPanel.Id).hide();

            // Header
            $("#" + errorPanel.Header.Id).hide();
            $("#" + errorPanel.Header.Table.Id).hide();
            $("#" + errorPanel.Header.Table.Id).prev().hide();
            getTableRows(errorPanel.Header.Table.Id, null).remove("");

            // Dialogue
            $("#" + errorPanel.Dialogue.Id).hide();
            $("#" + errorPanel.Dialogue.Table.Row.format(1)).hide();
            $("#" + errorPanel.Dialogue.Table.Row.format(2)).hide();
            for (var i = 1; i <= 2; i++)
            {
                $("#" + errorPanel.Dialogue.Table.ColTimeCode.format(i)).empty().removeClass(_notifications.error);
                $("#" + errorPanel.Dialogue.Table.ColCharacter.format(i)).empty().removeClass(_notifications.error);
                $("#" + errorPanel.Dialogue.Table.ColDialogue.format(i)).empty().removeClass(_notifications.error);
            }
        }
        function showImportResults(status, message, info)
        {
            clearImportResults();
            
            if (status == true && info.Step != null)
            {
                if (!processImportStepResult(info) )
                    return;
            }

            var resultsPanel = controles.Importacion.Results;
            $("#" + resultsPanel.Id).show();
            $("#" + resultsPanel.Message).html(message).addClass( status ? _notifications.success : _notifications.error ).fadeIn();

            if ( status )
                refrescarGrilla();
            else
                showImportErrors(info);
        }
        function processImportStepResult(stepInfo)
        {
            var continueProcessingResult = true;

            // info.Message    
            // info.HasErrors
            // info.Data
            switch(stepInfo.Step.toString())
            {
                case "<%= (int)ImportStep.ReadFileContent %>":
                    break;
                case "<%= (int)ImportStep.ReadParameters %>":
                    break;
                case "<%= (int)ImportStep.MergeSettings %>":
                    break;
                case "<%= (int)ImportStep.SaveFile %>":
                    break;
                case "<%= (int)ImportStep.ConvertFile %>":
                    break;
                case "<%= (int)ImportStep.SearchTranslator %>":
                    continueProcessingResult = false;
                    abrirDialogoSeleccionTraductor(stepInfo);
                    break;
                case "<%= (int)ImportStep.ReadyForImport %>":
                    break;
            }

            return continueProcessingResult;
        }
        function showImportErrors(errorInfo)
        {
            if (errorInfo == null)
                return;

            var exceptionType = errorInfo.Type;
            if (exceptionType == null)
                return;

            if (HeaderDataExceptions.contains(exceptionType))
                handleHeaderDataException(errorInfo);

            if (TimeCodeExceptions.contains(exceptionType))
                handleTimeCodeException(errorInfo);

            if (DialogueExceptions.contains(exceptionType))
                handleDialogueException(errorInfo);

            $("#" + controles.Importacion.Results.ErrorPanel.Id).show();
        }
        function handleHeaderDataException(errorInfo)
        {
            var errorPanel = controles.Importacion.Results.ErrorPanel;

            switch (errorInfo.Type)
            {
                case ImportExceptions.HeaderDataExceptions.MissingHeaderData:

                    var headerDataInfo = errorInfo.HeaderExceptionInfo;
                    var currentRowIndex = -1;
                    var tbl = $("#" + errorPanel.Header.Table.Id);
                    var tr  = $("<tr />");
                    var tableInfo = headerDataInfo.HeaderDataInfo;
                    for (var i = 0; i < tableInfo.length; i++)
                    {
                        var cellInfo = tableInfo[i];
                        // Add new <tr>
                        if (cellInfo.RowIndex != currentRowIndex) 
                        {
                            tr = $("<tr />", { id: errorPanel.Dialogue.Table.Row.format(i) });
                            currentRowIndex = cellInfo.RowIndex;
                        }
                        // Add new <td>
                        var td = "<td>" + cellInfo.CurrentValue + "</td>";
                        tr.append(td);
                        tbl.append(tr);
                    }
                    tbl.prev().show();
                    tbl.show();
                    break;
            }

            $("#" + errorPanel.Header.Id).show();
        }
        function handleTimeCodeException(errorInfo)
        {
            var cols = new Array();

            var errorDialogue = controles.Importacion.Results.ErrorPanel.Dialogue;

            switch (errorInfo.Type)
            {
                case ImportExceptions.TimeCodeExceptions.MissingTimeCode:
                    cols.push($("#" + errorDialogue.Table.ColTimeCode.format(1)));
                    break;
                case ImportExceptions.TimeCodeExceptions.InvalidFormatTimeCode:
                    cols.push($("#" + errorDialogue.Table.ColTimeCode.format(1)));
                    break;
                case ImportExceptions.TimeCodeExceptions.UnexpectedTimeCode:
                    cols.push($("#" + errorDialogue.Table.ColTimeCode.format(1)));
                    cols.push($("#" + errorDialogue.Table.ColTimeCode.format(2)));
                    break;
            }

            for(var i=0; i < cols.length; i++)
            {
                cols[i].addClass(_notifications.error);
            }
            
            var dialogueExceptionInfo = errorInfo.DialogueExceptionInfo;
            for (var i = 0; i < dialogueExceptionInfo.length; i++)
            {
                var dialogueInfo = dialogueExceptionInfo[i];
                if (dialogueInfo != null)
                {
                    $("#" + errorDialogue.Table.ColTimeCode.format(i+1)).html(dialogueInfo.TimeCode);
                    $("#" + errorDialogue.Table.ColCharacter.format(i+1)).html(dialogueInfo.Character);
                    $("#" + errorDialogue.Table.ColDialogue.format(i+1)).html(dialogueInfo.Dialogue);
                    $("#" + errorDialogue.Table.Row.format(i + 1)).show();
                }
            }

            $("#" + errorDialogue.Table.Id).show();
            $("#" + errorDialogue.Id).show();
        }
        function handleDialogueException(errorInfo)
        {
            var errorDialogue = controles.Importacion.Results.ErrorPanel.Dialogue;

            switch (errorInfo.Type)
            {
                case ImportExceptions.DialogueExceptions.EmtpyDialogue:
                    var cols = 
                    [
                        $("#" + errorDialogue.Table.ColTimeCode.format(1)),
                        $("#" + errorDialogue.Table.ColCharacter.format(1)),
                        $("#" + errorDialogue.Table.ColDialogue.format(1))
                    ];
                    for(var i=0; i < cols.length; i++)
                    {
                        cols[i].addClass(_notifications.error).html("&nbsp;");
                    }
                    $("#" + errorDialogue.Table.Row.format(1)).show();
                    break;
            }

            $("#" + errorDialogue.Table.Id).show();
            $("#" + errorDialogue.Id).show();
        }
    </script>
    
    <!-- Grilla Guiones Importados -->
    <script type="text/javascript" >
        function inicializarGrillaGuionesImportados()
        {
            var colModel =
            [
                { name: 'Id',           index: 'Id',            label: 'Id',                align: 'center', hidden: true,  search: false, editable: false, sortable: false, dataType: 'Int32' },
                { name: 'Activo',       index: 'Activo',        label: 'Activo',            align: 'center', hidden: true,  search: false, editable: false, sortable: false, dataType: 'Boolean' },
                { name: 'Eliminar',     index: 'Eliminar',      label: ' ',                 align: 'center', hidden: false, search: false, editable: false, sortable: false, width:25 },
                { name: 'Episodio',     index: 'Episodio',      label: 'Ep.',               align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'Int32', width: 50 },
                { name: 'Guion',        index: 'Titulo',        label: 'Título',            align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'String', width: 400 },
                { name: 'Duracion',     index: 'Loops',         label: 'Duración',          align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'Int32', width: 70 },
                { name: 'Loops',        index: 'Loops',         label: 'Loops',             align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'Int32', width: 70 },
                { name: 'Paginas',      index: 'Paginas',       label: 'Páginas',           align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'Int32', width: 70 },
                { name: 'Personajes',   index: 'Personajes',    label: 'Personajes',        align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'Int32', width: 70 },
                { name: 'Fecha',        index: 'FechaCreacion', label: 'Fecha Creación',    align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'DateTime', width: 120, formatter: 'date', formatoptions: { srcformat: 'Y-m-d', newformat: 'd/m/Y' } },
                { name: 'Estado',       index: 'Estado',        label: 'Estado',            align: 'center', hidden: false, search: false, editable: false, sortable: false, dataType: 'String', width: 100, formatter: jqGridFormatter_EstadoGuion }
            ];

            var gridOpts                        = Helpers.jqGridHelper.createGridObject();
            gridOpts.IdGrid                     = "{0}_Grid".format(controles.Tablas.GuionesImportados.Id);
            gridOpts.IdPager                    = "{0}_GridPager".format(controles.Tablas.GuionesImportados.Id);
            gridOpts.IdColModel                 = "{0}_GridColModel".format(controles.Tablas.GuionesImportados.Id);
            gridOpts.ColModel                   = colModel;
            //gridOpts.Width                      = _GridInfo.Defaults.Width;
            gridOpts.Height                     = _GridInfo.Defaults.Height / 2;
            gridOpts.Title                      = setGridTitle("Guiones importados");
            gridOpts.DefaultSortColumn          = "Episodio";
            gridOpts.DefaultSortOrder           = "asc";
            gridOpts.PageSizeList               = [5, 10, 20, 30, 50, 100];
            gridOpts.DefaultPageSize            = _GridInfo.Defaults.PageSize;
            /* jqGrid Properties */
            gridOpts.AutoWidth                  = false;
            gridOpts.ShrinkToFit                = false;
            gridOpts.LoadFiltersOnSearch        = false;
            /* jqGrid Instance Urls & Params */
            gridOpts.UrlGet                     = "obtenerGuionesImportados";
            /* jqGrid Pager Buttons */
            gridOpts.ShowSearch                 = false;
            gridOpts.ShowRefresh                = false;
            /* jqGrid Extra Functions */
            gridOpts.LoadFilters                = grillaGuionesImportados_LoadFilters;
            gridOpts.OnLoadComplete             = grillaGuionesImportados_OnLoadComplete;
            gridOpts.MultiSelect                = true;
            gridOpts.MultiSelectMaxSelected     = 1;
                
            Helpers.jqGridHelper.setGridOpts(gridOpts);
        }
        function grillaGuionesImportados_LoadFilters()
        {
            var rules = [];

            //var condicionActivo =
            //{
            //    condition: "AND",
            //    set:
            //    [
            //        { match: "OR", field: "Activo", op: "eq", data: true }
            //    ]
            //};
            //rules.push(condicionActivo);

            return JSON.stringify(rules);
        }
        datePick = function(elem)
        {
            jQuery(elem).datepicker();
            //jQuery(elem).datepicker( { minDate: -20, maxDate: "+1M +10D" } );
        }
        function grillaGuionesImportados_OnLoadComplete()
        {
            grillaGuionesImportados_AgregarHandlersBotones();
        }
        function grillaGuionesImportados_AgregarHandlersBotones()
        {
            $(".btnEditarGuion").click
            (
                function () {
                    var tiposUsuario = [_TiposUsuario.Manager, _TiposUsuario.Produccion, _TiposUsuario.Traductor];
                    if (validarTipoUsuario(_CurrentUser.Tipo, tiposUsuario)) {
                        var idGuion = $(this).attr("id").replace("btnEditarGuion_", "");
                        editarGuion(idGuion);
                    } else {
                        mostrarNotificacion( _notifications.warning, "No tiene permisos para realizar esta acción." );
                    }
                }
            );
            mostrarTooltip(".btnEditarGuion", "Ver detalle del Guión");

            $(".btnEliminarGuion").click
            (
                function()
                {
                    var tiposUsuario = [_TiposUsuario.Manager, _TiposUsuario.Produccion, _TiposUsuario.Traductor];
                    if (validarTipoUsuario(_CurrentUser.Tipo, tiposUsuario)) {
                        var id = $(this).attr("id").replace("btnEliminarGuion_", "");
                        eliminarGuion(id, refrescarGrilla);
                    } else {
                        mostrarNotificacion( _notifications.warning, "No tiene permisos para realizar esta acción." );
                    }
                }
            );
            mostrarTooltip(".btnEliminarGuion", "Eliminar Guión");
        }
        function refrescarGrilla()
        {
            Helpers.jqGridHelper.reloadGrid("{0}_Grid".format(controles.Tablas.GuionesImportados.Id));
        }
    </script>    

    <!-- Diálogo Selección Traductor -->
    <script type="text/javascript" >
        function convertDataToGridModelData(data)
        {
            var translators = new Array();
            if (data != null)
            {
                for (var i = 0; i < data.length; i++)
                {
                    var translator = data[i];
                    translators.push
                    ({
                        Id: translator.Id,
                        Activo: "1",
                        Activar: "",
                        Editar: "",
                        Eliminar: "",
                        IdTipo: translator.IdTipo,
                        Tipo: translator.Tipo,
                        Nombre: translator.Nombre,
                        Apellido: translator.Apellido,
                        IdCategoria: translator.IdCategoria,
                        Categoria: translator.Categoria
                    });
                }
            }
            return translators;
        }
        function inicializarDialogoSeleccionTraductor()
        {
            var dialogOptions =
            {
                preventClose: true,
                //closeOnEscape: false,
                //modal: true,
                title:  controles.Dialogos.Traductor.Title.toUpperCase(),
                width:  controles.Dialogos.Traductor.Width,
                height: controles.Dialogos.Traductor.Height
            };

            Helpers.DialogHelper.initializeDialog( controles.Dialogos.Traductor.Id, dialogOptions );

            $("#{0}".format(controles.Dialogos.Traductor.btnConfirmar)).click(function () { confirmarSeleccionTraductor(); });
        }
        function abrirDialogoSeleccionTraductor(info)
        {
            var gridModelData = convertDataToGridModelData(info.Data);

            limpiarDialogoSeleccionTraductor();

            $("#" + controles.Dialogos.Traductor.Mensaje).html( info.Message );

            UserGrid.LoadData(gridModelData);
            
            Helpers.DialogHelper.openDialog( controles.Dialogos.Traductor.Id );
        }
        function limpiarDialogoSeleccionTraductor()
        {
        }
        function cerrarDialogoSeleccionTraductor()
        {
            Helpers.DialogHelper.closeDialog( controles.Dialogos.Traductor.Id );
        }
        function confirmarSeleccionTraductor()
        {
            var id = null;
            var firstName = "";
            var lastName = "";
            var selectedIds = Helpers.jqGridHelper.getSelectedRowIds( UserGrid.Id, true);
            if (selectedIds.length > 0)
            {
                id = selectedIds[0];
                firstName = Helpers.jqGridHelper.getGridRowCellValue(UserGrid.Id, id, "Nombre");
                lastName = Helpers.jqGridHelper.getGridRowCellValue(UserGrid.Id, id, "Apellido");
            }

            if (id != null)
            {
                var parametros =
                {
                    idTranslator : id,
                    firstName: firstName,
                    lastName: lastName
                }
                Helpers.AJAXHelper.invoke("continueScriptImportProcess", JSON.stringify(parametros), continueScriptImportProcess_Response);
                Site.Messages.showLoadingMessage();
                cerrarDialogoSeleccionTraductor();
            }
            else
            {
                mostrarNotificacion( _notifications.warning, "Debe seleccionar un Traductor." );    
            }
        }
        function continueScriptImportProcess_Response(datos)
        {
            Site.Messages.hideLoadingMessage();
            var respuestaInfo = jQuery.parseJSON(datos.d);
            showImportResults(respuestaInfo.Resultado, respuestaInfo.Mensaje, respuestaInfo.Valor);
        }
        function grillaTraductores_GetFilter()
        {
            var rules = [];

            //var condicionActivo =
            //{
            //    condition: "AND",
            //    set:
            //    [
            //        { match: "OR", field: "Activo", op: "eq", data: 1 }
            //    ],
            //};
            //rules.push( condicionActivo );

            //var condicionTraductores = 
            //{
            //    condition: "AND",
            //    set:
            //    [
            //        { match: "AND", field: "Tipo.Id", op: "eq", data: _TiposUsuario.Traductor.Id }
            //    ]
            //};
            //rules.push( condicionTraductores );
          
            return rules;
        }
    </script>
    
    <!--HTML-->
    <div id="content" style="margin:0 auto; width:90%;" >
        
        <span>
            <input id="fileScript" type="file" disabled="disabled" />
            <br />
        </span>
        <!--
        <div id="dragAndDropFileScripts" style="height:200px; background-color:gainsboro; border: 1px dashed gray; text-align: center; line-height: 200px; font-size: 40px;" >
            Arrastrar y soltar archivo(s) aquí
        </div>
        -->
        <!-- Filtro -->
        <div style="width:100%" >
            <table width="100%" border="1" cellpadding="0" cellspacing="0" class="default" >
                <colgroup>
                    <col width="10%" />
                    <col width="35%" />
                    <col width="10%" />
                    <col width="45%" />
                </colgroup>
                <tr>
                    <td class="indent" >
                        <label>Proyecto:</label>
                    </td>
                    <td>
                        <select id="selProyecto" multiple="true" runat="server" ></select>
                    </td>
                    <td class="indent">
                        <label>Documento:</label>                        
                    </td>
                    <td class="indent">
                        <input type="button" id="btnSeleccionarArchivo" value="Seleccionar.." />
                        <input id="txtSeleccion" readonly="readonly" style="text-align:center; font-size:1em; border:1px solid transparent; width:74%;" />
                    </td>
                </tr>
            </table>
        </div>
        
        <input id="btnGenerarGuion" type="button" value="Generar Guión" />
        
        <br/><br/>

        <div id="pnlOpcionesAvanzadas">
            <h3>Opciones avanzadas</h3>
            <div>
                <div id="pnlOpcionesAvanzadas_Configuracion" class="settingsContainer" >
                    <fieldset class="ui-widget ui-widget-content ui-corner-all" >
                        <legend class="ui-widget-header" >Configuración</legend>
                        <input type="checkbox" id="chkOmitFirstRow" style="vertical-align:middle" />
                        <label for="chkOmitFirstRow" style="vertical-align:middle" >Encabezado en primer fila?</label>
                    </fieldset>
                </div>
            </div>
        </div>
        
        <br />
        <div id="pnlImportResult" style="height:95px;">
            <div id="pnlImportMessage" style="padding-left: 5px;display:none" ></div>
            <div id="pnlImportError" style="display:none" >
                <div id="pnlImportErrorHeaderDataInfo" style="display:none" >
                    <table id="tblImportErrorHeaderDataInfoHeader" border="1" width="100%" class="default" style="margin-bottom:0px;" >
                        <colgroup>
                            <col width="100%" />
                        </colgroup>                    
                        <thead>
                            <tr>
                                <th>Encabezado</th>
                            </tr>
                        </thead>                    
                    </table>
                    <table id="tblImportErrorHeaderDataInfo" border="1" width="100%" class="default" style="margin-top:0px;" >
                        <colgroup>
                            <col width="50%" />
                            <col width="50%" />
                        </colgroup>
                        <tbody>
                            
                        </tbody>
                    </table>
                </div>
                <div id="pnlImportErrorDialogueInfo" style="display:none">
                    <table id="tblImportErrorDialogueInfo" border="1" width="100%" class="default" >
                        <colgroup>
                            <col width="8%" />
                            <col width="20%" />
                            <col width="72%" />
                        </colgroup>
                        <thead>
                            <tr>
                                <th class="text-align-left" >TimeCode</th>
                                <th class="text-align-left" >Personaje</th>
                                <th class="text-align-left" >Diálogo</th>
                            </tr>
                        </thead>
                        <tr id="rowImportErrorDialogueInfo1" style="display:none" >
                            <td id="colImportErrorDialogueInfoTimeCode1" class="indent" ></td>
                            <td id="colImportErrorDialogueInfoCharacter1" class="indent" ></td>
                            <td id="colImportErrorDialogueInfoDialogue1" class="indent" ></td>
                        </tr>
                        <tr id="rowImportErrorDialogueInfo2" style="display:none" >
                            <td id="colImportErrorDialogueInfoTimeCode2" class="indent" ></td>
                            <td id="colImportErrorDialogueInfoCharacter2" class="indent" ></td>
                            <td id="colImportErrorDialogueInfoDialogue2" class="indent" ></td>
                        </tr>
                    </table>                    
                </div>
            </div>
        </div>

        <br/>       
        
        <!-- Grilla Guiones Importados -->
        <div id="grillaGuiones" style="clear:both" >
            <table id="tblGuionesImportados_Grid" ></table>
            <div id="tblGuionesImportados_GridPager" ></div>
            <input type="hidden" id="tblGuionesImportados_GridColModel" />      
        </div>
        
        <!-- Diálogo Selección Traductor -->
        <div id="dialogSeleccionTraductor" style="display:none" >
            <span class="ui-state-highlight" style="display: block; margin: 0px 5px 5px 0px; padding: 5px;" id="lblMensajeSeleccionTraductor"></span>
            <br/>
            <uc1:UserGrid runat="server" ID="UserGrid" Url="obtenerUsuarios" LoadOnInitialization="false" Title="Usuario(s) encontrado(s):" ShowActionColumns="false" UseSimpleSearch="true" Filter="grillaTraductores_GetFilter" MaxSelectedRows="1"  />
            <br />
            <div style="float:right" >
                <div id="btnConfirmarTraductor" class="botonAccion" >
                    <img src="Images/16x16/valido.png" alt="Confirmar" />
                    <label>Confirmar</label>
                </div>
            </div>

        </div>        

    </div>

</asp:Content>